import os
from enum import Enum


class MatchType(Enum):
    TPL_MATCH = 1 # 匹配库级别的过程中
    TPL_VERSION_MATCH = 2 #已经确认了库，正在匹配版本级别的过程中


class MatchMethod(Enum):
    VECTOR_ONLY = "vector_only"      # 仅使用向量相似度
    HYBRID = "hybrid"                # 同构异构分析（混合方法）


class Config:
    # 日志配置
    LOGLEVEL = "INFO"
    LOGFILE = "ASTFeature.log"
    # MongoDB连接（需要填写！）
    NPM_COLLECTION = "npm_functions_testv2"
    MONGO_URI = "mongodb://localhost:27017/"
    DB_NAME = "LocalArkTSTest"

    #ArkTS函数的集合,需要填写！
    ArkTS_COLLECTION = "arkts_functions_testv2"

    # 软件包元数据信息数据集合（导入即可）
    LIBRARY_INFO_COLLECTION = "library_info_testv2"
    # 版本差异库（导入即可）
    VERSION_DIFF_COLLECTION = "version_diff_function_info_testv2"

    # ArkTS待检测Har包的根目录，需要填写！
    ARKTS_ROOT_DIR = r"F:\OpenHarmony_ArkTS\Test01"

    # 函数结果集合(默认自动生成）
    RESULT_COLLECTION = "functionResults"
    lib_res_collection = "libRes"

    # 批量处理
    INITIAL_BATCH_SIZE = 800
    MAX_WORKERS = 13  # 建议设为CPU核心数
    # 第一轮初筛的特征
    filter_key = "vector"

    PROJECT_ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    # 定义结果输出的文件夹路径
    RESULT_DIR = os.path.join(PROJECT_ROOT_DIR, "result")
    # 定义默认输出的CSV文件名
    RESULT_CSV_FILE_NAME = "arkts_npm_mapping_results.csv"
    # 拼接成完整的文件路径 (可选，也可以在代码中动态拼接)
    RESULT_CSV_FILE = os.path.join(RESULT_DIR, RESULT_CSV_FILE_NAME)

    # 全局变量（或配置）
    FAISS_INDEX_PATH = r"D:\Project\PythonProjects\ArkTS_FunctionCompare\source\faiss_index\vector_index.index"
    ID_MAP_PATH = r"D:\Project\PythonProjects\ArkTS_FunctionCompare\source\faiss_index\id_map.json"
